package sdk3.components.DataGrid.DataGridColumnTIE
{
	import sdk3.components.TextInputExtended.TextInputExtended;
	
	import flash.events.Event;
	import flash.events.FocusEvent;
	
	import mx.core.IFactory;
	import mx.events.DataGridEvent;
	
	/*******************************************************************************
	 * Software: AutoCompleteDatagridEditor.as
	 * Version:  1.1
	 * Date:     2010_03_27_TIME_00:25:57     
	 * WHO?
	 *   
	 * LICENSE:  GNU General Public License (http://www.gnu.org/licenses/gpl.html) 	 *  	 * English: 		This program is free software; 		you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; 		either version 3 of the License, or (at your option) any later version.   		This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 		without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 		See the GNU General Public License for more details. 		You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.   		 * Excerpt English: 		 * Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), 		 * that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things   		Auf Deutsch: 		Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, 		weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version. 		Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, 		sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 		Details finden Sie in der GNU General Public License. 		Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. 		Falls nicht, siehe <http://www.gnu.org/licenses/>.   		 * Auszug Deutsch: 		 * Wenn wir von freier Software sprechen, so beziehen wir uns auf Freiheit, nicht auf den Preis. 		 * Unsere Allgemeinen Öffentlichen Lizenzen sind darauf angelegt, sicherzustellen, daß Sie die Freiheit haben, 		 * Kopien freier Software zu verbreiten (und dafür etwas zu berechnen, wenn Sie möchten), die Möglichkeit, 		 * daß Sie die Software als Quelltext erhalten oder den Quelltext auf Wunsch bekommen, daß Sie die Software 		 * ändern oder Teile davon in neuen freien Programmen verwenden dürfen und daß Sie wissen, daß Sie dies alles tun dürfen. 
	 * 
	 * WHAT?
	 * Datagrid with an AutoComplete 
	 
	 * REQUIREMENTS TO RUN THIS:
	 * sdk 3.4, sdk 4.0 not working yet!
	 * USAGE EXAMPLE:
	 * 
	 * TODO:
	 * 
	 * COOL IDEAS:
	 * 
	 * KNOWN BUGS:
	 * 
	 * CHANGELOG:
	 * 2010_09_06_TIME_17:22:16|30min||changed extends to TextInputExtended (compatible with SDK4, which AutoComplete was not)
	 *******************************************************************************/

	public class TIEItemEditor extends TextInputExtended implements IFactory
	{
		/** class's constructor 
		 * _AutoCompleteDataGridColumn -> needed as an reference, to the last used AutoCompleteDataGridColumn + dataprovider
		 * otherwise dataProvider LOST over-written (singleton approach) **/
		public function TIEItemEditor(DGCTIE:DataGridColumnTIE,mode:String = "anything",behaviour_on_valid:Array = null,behaviour_on_invalid:Array = null)
		{
			this.addEventListener(Event.DEACTIVATE , itemEditEnd);
			// deactivate="Date_AC_Column.itemEditEnd(event);"
			// <TextInputExtended:TextInputExtended id="TIE2" text="AUTOCOMPLETE MATCH ANYWHERE" autocomplete="true"
			// valid_values="['89358','89331','123456789']"
			
			if(behaviour_on_valid == null)
			{
				behaviour_on_invalid = ['borderColor green'];
			}
			if(behaviour_on_invalid == null)
			{
				behaviour_on_invalid = ['borderColor red','delete content'];
			}

			this.valid_values = valid_values;
			// behaviour_on_valid="{['borderColor green']}"
			this.behaviour_on_valid = behaviour_on_valid; // e.g. ['borderColor green'];
			// behaviour_on_invalid="{['borderColor red','delete content']}"
			this.behaviour_on_invalid = behaviour_on_invalid; // ['borderColor red','delete content'];
			this.mode = mode;
			this.percentWidth = 100;
			this.percentHeight = 100;
			// this.Dropdown_show_onFocusIn = true; // on per default now
			// this.addEventListener(ListEvent.CHANGE, AC_CHANGE);
			// this.addEventListener(FocusEvent.FOCUS_IN, FOCUS_IN);
			// this.dataProvider = new Array();
			this.validateNow();
			
			this._DGCTIE = DGCTIE;
		}
		
		/** store reference **/
		public var _DGCTIE:DataGridColumnTIE;
		
		public var _TIEItemEditor:TIEItemEditor;
		
		/** create a single, reusable instance of the AutoCompleteDatagridEditor, instead of re-creating it everytime when public function newInstance():* is called 
		 * otherwise the dataProvider get's lost.... **/ 
		public function newInstance():*
		{
			_DGCTIE.itemEditor = _DGCTIE.DataGridEditor_inst = new TIEItemEditor(_DGCTIE,this.mode,this.behaviour_on_valid,this.behaviour_on_invalid);
			return _DGCTIE.itemEditor;
		}
		
		public function itemEditEnd(event:Event):void
		{
			this.dispatchEvent(new FocusEvent("FOCUS_OUT"));
		}
	}
}